#!/usr/bin/env python
import socket, os

# Los datos del recurso a recuperar
bytes = 1024
port = 4500
host = 'localhost'


class Proxy():
	
	def __init__ (self,host,port):
		
		# Creamos el socket
		self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		# Indicamos al socket la direccion IP y Port de escucha
		self.server.bind((host, port))
		# Indicamos el nro max de pedidos que aceptara
		self.server.listen(15)	            
	def Proceso(self):
		
		while 1:
			# Acepta las conexiones
			client, address = self.server.accept()
			# Se obtienen los datos desde el sock cliente 
			pedido = client.recv(bytes)		 
			# Se obtiene el nombre del recurso
			print "---------------------------"
			print pedido
			print "---------------------------"
			inicio = pedido.find("/")
			print " A partir de la posicion" +str(inicio)
			
			inicio = inicio + 1
			# Salto el espacio y voy a controlar desde la posicion +1
			# Hasta lelgar al final
			# L oque quuiero obtener es lo siguiente
			# si tengo esto :GET /index.html HTTP/1.1
			# Con el primero me quedo en /index.html bla bla
			# Con el paso siguiente me quiero quedar con index.html

			final = pedido[inicio:].find(" ") + inicio
			filename = pedido[inicio:final]
			
			# Voy a ver si el filename es vacio y lo redirecciono al index.html
			
			if len(filename) < 2:
				filename = "index.txt"
				print "Se redirecciona al Index.html"
			print "El recurso pedido es -%s-" % (filename)
			# Se verifica si se encuentra en el directorio el recurso solicitado
			
			existe_recurso = os.path.isfile(filename)
			
			if existe_recurso:
				archivo = open(filename, 'r')
				respuesta = archivo.read()
				client.send(respuesta)
				archivo.close()
			else:
				print "errorcito"
				archivo = open('error.html', 'r')
				respuesta = archivo.read()
				client.send(respuesta)
				archivo.close()
			
			client.close()

se = Proxy(host,port)
se.Proceso()
#server.close()

